package com.continautos.common.web;

import java.io.IOException;
import java.io.Serializable;
import java.util.Date;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import com.continautos.common.enums.ETipoUsuario;
import com.continautos.common.persistence.DAOFactory;
import com.continautos.common.persistence.dto.CtaTbEncuestaCliente;
import com.continautos.common.persistence.dto.CtaTbIngresoCliente;
import com.continautos.common.persistence.dto.CtaTbIngresoClientePk;
import com.continautos.common.persistence.dto.CtaTbPg;
import com.continautos.common.persistence.exceptions.CtaTbEncuestaClienteDaoException;
import com.continautos.common.persistence.exceptions.CtaTbIngresoClienteDaoException;
import com.continautos.common.persistence.exceptions.CtaTbPgDaoException;

@ManagedBean(name = "crearVisitanteBean")
@ViewScoped
public class CrearVisitanteBean implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private int rtaOrigen;
	private int rtaVehiculo;
	private CtaTbIngresoCliente ingresoCliente;
	private String urlServlet = "http://192.168.43.73:8080/AppWeb/MiServlet";
	private boolean enviarForm=false;
	
	@ManagedProperty("#{userSessionBean}")
	private UserSessionBean userSessionBean;
	
	public void viajarBean(){
		
		FacesContext facesContext = FacesContext.getCurrentInstance();
		HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(false);
		
		userSessionBean = (UserSessionBean)session.getAttribute("userSessionBean");
		
		ingresoCliente = new CtaTbIngresoCliente();
	}
	
	
	public void crearVisitante(){
		
		ingresoCliente = new CtaTbIngresoCliente();
		
 		if(userSessionBean.getTipoUsuario().equals(ETipoUsuario.ANFITRION)){
			ingresoCliente.setIdAnfitrion(userSessionBean.getUsuario().getId());
		}
		
		ingresoCliente.setIdConcesionario(userSessionBean.getIdConcesionario());
		ingresoCliente.setFecha(new Date());
		
		try {
			CtaTbIngresoClientePk pk = DAOFactory.getCtaTbIngresoClienteDao().insert(ingresoCliente);
			
			ingresoCliente.setId(pk.getId());
			
			userSessionBean.setIngresoClienteActual(ingresoCliente);
			
		} catch (CtaTbIngresoClienteDaoException e) {
			e.printStackTrace();
		}
		
		CtaTbEncuestaCliente encuesta = new CtaTbEncuestaCliente();
		
		encuesta.setFecha(new Date());
		encuesta.setIdIngreso(ingresoCliente.getId());
		
		CtaTbPg p2;
		CtaTbPg p1;
		try {
			
			p1 = DAOFactory.getCtaTbPgDao().findByPrimaryKey(rtaOrigen);
			encuesta.setDondeSupo(p1.getDescripcion());
			
			p2 = DAOFactory.getCtaTbPgDao().findByPrimaryKey(rtaVehiculo);
			
			encuesta.setDondeSupo(p1.getDescripcion());
			encuesta.setTipoVehiculo(p2.getDescripcion());
			
		} catch (CtaTbPgDaoException e2) {
			e2.printStackTrace();
		}
		
		try {
			DAOFactory.getCtaTbEncuestaClienteDao().insert(encuesta);
		} catch (CtaTbEncuestaClienteDaoException e1) {
			e1.printStackTrace();
		}
		
		try {
			FacesContext.getCurrentInstance().getExternalContext()
			.redirect("/CONTINAUTOS/InvocarAppServlet?datalink="+ingresoCliente.getId());
			
			//FacesContext.getCurrentInstance().getExternalContext().redirect("http://192.168.1.102:8080/CONTINAUTOS/InvocarAppServlet?datalink="+ingresoCliente.getId());
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		
		enviarForm=true;
		
	}


	public int getRtaOrigen() {
		return rtaOrigen;
	}


	public void setRtaOrigen(int rtaOrigen) {
		this.rtaOrigen = rtaOrigen;
	}


	public int getRtaVehiculo() {
		return rtaVehiculo;
	}


	public void setRtaVehiculo(int rtaVehiculo) {
		this.rtaVehiculo = rtaVehiculo;
	}


	public UserSessionBean getUserSessionBean() {
		return userSessionBean;
	}


	public void setUserSessionBean(UserSessionBean userSessionBean) {
		this.userSessionBean = userSessionBean;
	}


	public boolean isEnviarForm() {
		return enviarForm;
	}


	public void setEnviarForm(boolean enviarForm) {
		this.enviarForm = enviarForm;
	}

	
}
